package com.ler.yrmall.product.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ler.yrmall.product.entity.SkuAttrValueEntity;
import com.ler.yrmall.product.vo.SkuItemSaleAttrVO;
import com.ler.yrmall.basic.Form;
import com.ler.yrmall.product.mapper.SkuSaleAttrValueMapper;
import com.ler.yrmall.product.service.SkuAttrValueService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author leron
 */
@Service
public class SkuAttrValueServiceImpl extends ServiceImpl<SkuSaleAttrValueMapper, SkuAttrValueEntity> implements SkuAttrValueService {

    @Override
    public IPage<SkuItemSaleAttrVO> queryPage(Form request) {
        IPage<SkuAttrValueEntity> page = this.page(request.getPage());
        return page.convert(item -> {
            SkuItemSaleAttrVO target = new SkuItemSaleAttrVO();
            BeanUtils.copyProperties(item,target);
            return target;
        });
    }

    @Override
    public List<SkuItemSaleAttrVO> getSaleAttrsBySpuId(Long spuId) {
        return this.baseMapper.getSaleAttrBySpuId(spuId);
    }

    @Override
    public List<String> getAttrsAsString(Long skuId) {
        return this.baseMapper.getAttrsAsString(skuId);
    }

    @Override
    public List<String> getAttrValuesAsString(Long skuId) {
        return this.baseMapper.getAttrValuesAsString(skuId);
    }

    @Override
    public void deleteBySkus(List<Long> skuIds) {
        this.remove(Wrappers.<SkuAttrValueEntity>lambdaQuery().in(SkuAttrValueEntity::getSkuId,skuIds));
    }
}